package com.adtech.adms.system.dao;

import java.util.Date;
import java.util.List;

import com.adtech.adms.system.SystemConstants.UserLoginLog;
import com.adtech.adms.system.pojo.Feature;
import com.adtech.adms.system.pojo.User;
import com.adtech.core.dao.HibernateDAO;
import com.adtech.core.dao.exp.Expression;
import com.adtech.core.dao.query.Pager;
import com.adtech.core.dao.query.Sort;

/**
 * 用户登录日志DAO
 * 为用户登录日志定义数据库操作接口
 * @author Dormin 
 * @since 2011-6-16 
 * 
 * @Copyright (C) AD Tech Workshop All Right Reserved
 */
public interface LoginLogDAO extends HibernateDAO {
	/**
	 * 
	 * @function 查找当前用户本次登录的记录
	 * @param loginName 用户登录名
	 *
	 * @return 登录日志
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public UserLoginLog getLoginLogByLoginName(String loginName);

	/**
	 * 
	 * @function 更新因系统崩溃而失效的登录日志
	 * @param date 系统上次存活时间
	 *
	 * @return
	 * @exception
	 *
	 * @author Dormin
	 * @history
	 *
	 */
	public void updateInvalidLoginLog(Date date);
	
	
	/**
	 * 各级管理员查看本级别登录日志
	 * 
	 * @param pager
	 * @param expression
	 * @param sort
	 * @return
	 * @author Dormin
	 */	
	public List<?> getLoginLogList(User user, Pager pager, Expression expression, Sort sort);
	
	/**
	 * 各级管理员查看本级别系统日志
	 * 
	 * @param pager
	 * @param expression
	 * @param sort
	 * @return
	 * @author Dormin
	 */	
	public List<?> getSystemLogList(User user,UserLoginLog loginLog, Pager pager, Expression expression, Sort sort);
	
	/**
	 * 查询模块二级菜单
	 * 
	 * @param rootId
	 * @return
	 * @author Dormin
	 */
	public List<Feature> getsecondFeatureListByParent();
}
